package cn.liutao.common.generator;

import cn.liutao.common.entity.BaseEntity;
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.zaxxer.hikari.HikariDataSource;

public class DishCodegen {

    public static void main(String[] args) {
        //配置数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/orderdb?characterEncoding=utf-8");
        dataSource.setUsername("root");
        dataSource.setPassword("root");

        //创建配置内容，两种风格都可以。
        GlobalConfig globalConfig = createGlobalConfigUseStyle2();

        //通过 datasource 和 globalConfig 创建代码生成器
        Generator generator = new Generator(dataSource, globalConfig);

        //生成代码
        generator.generate();
    }


    public static GlobalConfig createGlobalConfigUseStyle2() {
        //创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();

        //设置根包
        globalConfig.getPackageConfig()
                .setBasePackage("cn.liutao.dish");

        //设置表前缀和只生成哪些表，setGenerateTable 未配置时，生成所有表
        globalConfig.getStrategyConfig()
                .setTablePrefix("")
//                .setGenerateTable("dish");
                .setGenerateTable("dining_table");
//                .setGenerateTable("taste");
//                .setGenerateTable("cuisine");

        //设置生成 entity 并启用 Lombok
        globalConfig.enableEntity()
                .setSuperClass(BaseEntity.class)
                .setWithLombok(true);

        //设置生成 mapper
        globalConfig.enableMapper();

        //生成xml
        globalConfig.enableMapperXml();

        //配置注解
        globalConfig.getJavadocConfig()
                .setAuthor("liutao");

        //配置service
        globalConfig.enableService();
        globalConfig.enableServiceImpl();

        return globalConfig;
    }
}
